package statement

import (
	"wzgames/internal/model/gamep"
	"wzgames/internal/model/gkindp"
	"wzgames/internal/model/mcomm"
	"wzgames/internal/model/roulettep"
)

type AviatorBetInfo struct {
	ServerSeed  string  `json:"server_seed"`
	ClientSeed  string  `json:"client_seed"`
	BetId       string  `json:"bet_id"`
	CashOut     bool    `json:"cashout"`
	Cancel      bool    `json:"cancel"`
	Multiplier  float64 `json:"multiplier"`
	Result      float64 `json:"result"`
	AutoMulti   float64 `json:"auto_multi"` // auto cashOut multiplier set
	AutoCashOut bool    `json:"auto_cashout"`
}

type DiceBetInfo struct {
	ServerSeed string  `json:"server_seed"`
	ClientSeed string  `json:"client_seed"`
	BetType    string  `json:"bet_type"`
	Chance     float64 `json:"chance"`
	Multiplier float64 `json:"multiplier"`
	Result     float64 `json:"result"`
}

type KenoBetInfo struct {
	ServerSeed string  `json:"server_seed"`
	ClientSeed string  `json:"client_seed"`
	SelNums    []int32 `json:"sel_nums"`
	WinNums    []int32 `json:"win_nums"`
	Multiplier float64 `json:"multiplier"`
	Result     []int32 `json:"result"`
}

type HotlineBetInfo struct {
	ServerSeed string   `json:"server_seed"`
	ClientSeed string   `json:"client_seed"`
	Color      string   `json:"color"`
	HighRisk   bool     `json:"high_risk"`
	Multiplier float64  `json:"multiplier"`
	Result     []string `json:"result"`
}

type PlinkoBetInfo struct {
	ServerSeed string  `json:"server_seed"`
	ClientSeed string  `json:"client_seed"`
	BetType    string  `json:"bet_type"`
	Pins       int32   `json:"pins"`
	PIdx       int32   `json:"pin_idx"`
	Multiplier float64 `json:"multiplier"`
	Result     int32   `json:"result"`
}

type RouletteBetInfo struct {
	ServerSeed string                 `json:"server_seed"`
	ClientSeed string                 `json:"client_seed"`
	Chips      string                 `json:"chips"`
	Multiplier float64                `json:"multiplier"`
	Result     int32                  `json:"result"`
	ChipArr    []*gkindp.RouletteChip `json:"chip_arr"`
}

type MinesBetInfo struct {
	ServerSeed string            `json:"server_seed"`
	ClientSeed string            `json:"client_seed"`
	MineAmount int32             `json:"mine_amount"`
	Multiplier float64           `json:"multiplier"`
	CashOut    bool              `json:"cashout"`
	Bomb       bool              `json:"bomb"`
	AllDug     bool              `json:"dig_all"`
	Digs       []*gkindp.MineDig `json:"digs"`
	Result     []*gkindp.MinePos `json:"result"`
}

type GoalBetInfo struct {
	ServerSeed string            `json:"server_seed"`
	ClientSeed string            `json:"client_seed"`
	BetType    string            `json:"bet_type"`
	Multiplier float64           `json:"multiplier"`
	CashOut    bool              `json:"cashout"`
	Bomb       bool              `json:"bomb"`
	AllDug     bool              `json:"dig_all"`
	Digs       []*gkindp.GoalDig `json:"digs"`
	Result     []int32           `json:"result"`
}

type HiloBetInfo struct {
	BetInfo    *HiloBetBet   `json:"info"`
	Result     []*gamep.Card `json:"result"`
	TotalCards int32
	RoundNum   int
}

type HiloBetBet struct {
	Card     string          `json:"card"`
	FlagCard *gamep.Card     `json:"flag_card"`
	Left     *gkindp.HiloPay `json:"left"`
	Right    *gkindp.HiloPay `json:"right"`
	Save     *HiloBetSave    `json:"info"`
}

type HiloBetSave struct {
	ServerSeed string             `json:"server_seed"`
	ClientSeed string             `json:"client_seed"`
	Multiplier float64            `json:"multiplier"`
	CashOut    bool               `json:"cashout"`
	CardCount  int32              `json:"card_count"`
	Opens      []*gkindp.HiloOpen `json:"opens"`
	FlagCard   *gamep.Card        `json:"flag_card"`
}

type PlayState struct {
	BetId      uint64
	GAct       mcomm.GameAction
	GameId     int32
	RoundId    int64
	Multiplier float64
}

type RouletteBigBetInfo struct {
	ServerSeed string                    `json:"server_seed"`
	ClientSeed string                    `json:"client_seed"`
	Chips      string                    `json:"chips"`
	Multiplier float64                   `json:"multiplier"`
	RetNum     string                    `json:"ret_num"`
	RetColor   string                    `json:"ret_color"`
	RetGrp     string                    `json:"ret_grp"`
	ChipArr    []*roulettep.RouletteChip `json:"chip_arr"`
}
